//package com.zyf.cloud.common.utils;
//
//import com.alibaba.fastjson.JSONObject;
//import com.bonade.common.constant.CommonConstant;
//import io.jsonwebtoken.Claims;
//import io.jsonwebtoken.Jwts;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Base64;
//import java.util.LinkedHashMap;
//
///**
// * @author zhaoshajin
// * @date 2019/4/12 用户相关工具类
// */
//@Slf4j
//public class UserUtils {
//	private static final Logger log = LoggerFactory.getLogger(UserUtils.class);
//
//	private static final String CLIENT_ID = "clientId";
//	private static final String USER_INFO = "userInfo";
//	private static final String USER_NAME = "userName";
//	private static final String OPEN_ID = "openId";
//	private static final String CHANNEL = "channel";
//
//	/**
//	 * 根据header中的tokenCHANNEL
//	 */
//	public static String getChannel() {
//		try {
//			return (String) getClaims().get(USER_INFO, LinkedHashMap.class).get(CHANNEL);
//		} catch (Exception e) {
//			return "";
//		}
//	}
//
//	/**
//	 * 根据header中的token获取用户姓名
//	 */
//	public static String getUserName() {
//		try {
//			return (String) getClaims().get(USER_INFO, LinkedHashMap.class).get(USER_NAME);
//		} catch (Exception e) {
//			return "";
//		}
//	}
//
//	/**
//	 * 根据header中的token获取clientId
//	 */
//	public static String getClientId() {
//		try {
//			return (String) getClaims().get(CLIENT_ID);
//		} catch (Exception e) {
//			return "";
//		}
//	}
//
//	/**
//	 * 根据header中的token获取用户ID
//	 *
//	 * @return 用户ID
//	 */
//	public static String getUserId() {
//		try {
//			log.info("根据token获取userId, getUserId() = {}" , (String) getClaims().get(USER_INFO, LinkedHashMap.class).get(OPEN_ID));
//			return (String) getClaims().get(USER_INFO, LinkedHashMap.class).get(OPEN_ID);
//		} catch (Exception e) {
//			return "";
//		}
//	}
//
//	/**
//	 * 获取请求中token
//	 *
//	 * @param httpServletRequest request
//	 * @return token
//	 */
//	public static String getToken(HttpServletRequest httpServletRequest) {
//		String authorization = httpServletRequest.getHeader(CommonConstant.REQ_HEADER);
//		//log.info("根据request获取token, getToken() = {}" , StringUtils.substringAfter(authorization, CommonConstant.TOKEN_SPLIT));
//		return StringUtils.substringAfter(authorization, CommonConstant.TOKEN_SPLIT);
//	}
//
//	/**
//	 * 获取请求中token
//	 *
//	 * @return token
//	 */
//	public static String getToken() {
//		return getToken(getRequest());
//	}
//
//	/**
//	 * 获取请求中request
//	 *
//	 * @return request
//	 */
//	public static HttpServletRequest getRequest() {
//		return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//	}
//
//	/**
//	 * 根据header中的token获取用户claims
//	 *
//	 * @return claims
//	 */
//	public static Claims getClaims() {
//		String token = getToken();
//		String key = Base64.getEncoder().encodeToString(CommonConstant.SIGN_KEY.getBytes());
//		return Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
//	}
//
//	public static void main(String[] args) {
//		String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySW5mbyI6eyJjaGFubmVsIjoicGMiLCJ1c2VyTmFtZSI6IuaWh-aWueaXrSIsIm9wZW5JZCI6ImIyOWU5NzIzNzYxNTExZTk5YzdlN2NkMzBhZDNhNmE4IiwibG9naW5OYW1lIjoiMTMzMTgzOTg2NjUifSwic3lzdGVtIjoiY3VzdG9tZXJDb21wYW55U3lzdGVtIiwianRpIjoiNjI4ODJlOTUtNjU2Yy00M2NkLWJkOGYtNDk1OGJjMDEyOGFlIn0.Jl0iFUKSLZxTRLNoh-HAtaBEg83QrEaIClXKoPyaGE4";
//		String key = Base64.getEncoder().encodeToString("BONADE".getBytes());
//		System.out.println( JSONObject.toJSONString(key));
//		System.out.println( JSONObject.toJSONString(Jwts.parser().setSigningKey(key).parseClaimsJws(token)));
//		Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
//		System.out.println( JSONObject.toJSONString(claims));
//	}
//
//}
